home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / vidbasic.zip / VSCROLL.ASM < prev    next >
Assembly Source File  |  1990-11-29  |  4KB  |  157 lines

  1. ;«RM125»«TS8,16,24,32,40,48»
  2. ; Updated 11/20/90
  3.  
  4. ;============================================================================
  5. ;   Copyright (C) Copr. 1990 by Sidney J. Kelly
  6. ;           All Rights Reserved.
  7. ;           Sidney J. Kelly
  8. ;           150 Woodhaven Drive
  9. ;           Pittsburgh, PA 15228
  10. ;           home phone 412-561-0950 (7pm to 9:30pm EST)
  11. ;============================================================================
  12.  
  13. DOSSEG
  14. .Model Medium, Basic
  15. .Code
  16.  
  17. ;=========================================================================
  18. ;DECLARE SUB CLEARSCR (BYVAL ULR%, BYVAL ULC%, BYVAL LRR%, BYVAL LRC%,  
  19. ;_BYVAL ATTRIB%)
  20. ;CALL CLEARSCR(ULR%,  ULC%,  LRR%,  LRC%, ATTRIB%)
  21. ;      range:   1-50  1-80  1-50   1-80   0-255
  22. ; Uses the video bios to scroll a window.
  23. ;=========================================================================
  24.  
  25. EVEN
  26. CLEARSCR Proc FAR BASIC  \
  27. ULR:Word, ULC:Word, LRR:Word, LRC:Word, ATTRIB:Word
  28.  
  29.     Mov  BX,ULR        ;get the address for ULR%
  30.     Mov  CH,BL         ;put it into CH
  31.     Dec  CH            ;adjust 1-50 to 0-49 and allow EGA/VGA 43/50 line mode
  32.     Cmp  CH,49         ;range check
  33.     JBE  @f
  34.     Xor  CH,CH
  35. @@:
  36.     Mov  BX,ULC        ;get the address for ULC%
  37.     Mov  CL,BL         ;put it into CL
  38.     Dec  CL            ;adjust 1-80 to 0-79
  39.     Cmp  CL,79         ;range check
  40.     JBE  @f
  41.     Mov  CL,79
  42. @@:
  43.     Mov  BX,LRR        ;range check
  44.     Mov  DH,BL
  45.     Dec  DH
  46.     Cmp  DH,49
  47.     JBE  @F
  48.     Mov  DH,1          ;make LLR at least equal to 1
  49. @@:
  50.     Mov  BX,LRC
  51.     Mov  DL,BL
  52.     Dec  DL
  53.     Cmp  CL,79         ;range check
  54.     JBE  @F
  55.     Mov  CL,79         ;make LRC at least equal to 79
  56. @@:
  57.     Mov  BX,ATTRIB
  58.     Mov  BH,BL
  59.     OR   BH,BH
  60.     Jnz  @f
  61.     Mov  BH,07        ; use default of white on black if ATTRIB = 0
  62. @@:
  63.     Mov  AX,600h       ;Call clear screen function
  64.     Int  10h
  65.     Ret
  66. CLEARSCR EndP
  67.  
  68. ;=========================================================================
  69. ;DECLARE SUB SCROLLUP (BYVAL ULR%, BYVAL ULC%, BYVAL LRR%, BYVAL LRC%, BYVAL ROWS%, 
  70. ; _BYVAL ATTRIB%)
  71. ;CALL SCROLLUP(ULR%, ULC%, LRR%, LRC%, ROWS%, ATTRIB%)
  72. ; If ROWS%=0 then entire window cleared
  73. ; Description of parameters:
  74. ;    Because a rectangle can be described by two points, we us the following 
  75. ;    data points:
  76. ;    ULR = Upper left row
  77. ;    UCL = Upper left column
  78. ;    LRR = Lower right row
  79. ;    LRC = Lower right column
  80. ;       Rows = number of rows to scroll
  81. ; Uses the video bios to scroll a window.
  82. ;=========================================================================
  83.  
  84. EVEN
  85. SCROLLUP Proc FAR BASIC  \
  86. ULR:Word, ULC:Word, LRR:Word, LRC:Word, ROWS:Word, ATTRIB:Word
  87.  
  88.     Mov  AH,6
  89. Intro::                   ;Entry location for SCROLLDOWN
  90.     Mov  BX,ULR        ;get the address for ULR%
  91.     Mov  CH,BL         ;put it into CH
  92.     Dec  CH
  93.     Cmp  CH,49         ;range check
  94.     JBE  @f
  95.     Xor  CH,CH
  96. @@:
  97.     Mov  BX,ULC
  98.     Mov  CL,BL
  99.     Dec  CL
  100.     Cmp  CL,79         ;range check
  101.     JBE  @f
  102.     Mov  CL,79
  103. @@:
  104.     Mov  BX,LRR
  105.     Mov  DH,BL
  106.     Dec  DH
  107.     Cmp  DH,49          ;range chech
  108.     JBE  @f
  109.     Mov  DH,1
  110. @@:
  111.     Mov  BX,LRC
  112.     Mov  DL,BL
  113.     Dec  DL
  114.     Cmp  CL,79         ;range check
  115.     JBE  @f
  116.     Mov  CL,79
  117. @@:
  118.     Mov  BX,ROWS
  119.     Mov  AL,BL
  120.     Cmp  AL,50         ;see if # of ROWS is >50, use one line instead
  121.     Jb   @f
  122.     Mov  AL,1
  123. @@:
  124.     Mov  BX,ATTRIB
  125.     Mov  BH,BL
  126.     OR   BH,BH
  127.     Jnz  @f
  128.     Mov  BH,07      ; use default of white on black if ATTRIB = 0
  129. @@:
  130.     Int  10h
  131.     Ret
  132. SCROLLUP  EndP
  133.  
  134. ;=========================================================================
  135. ;DECLARE SUB SCROLLDOWN (BYVAL ULR%, BYVAL ULC%, BYVAL LRR%, BYVAL LRC%, BYVAL ROWS%, 
  136. ; _BYVAL ATTRIB%)
  137. ;CALL SCROLLDOWN(ULR%, ULC%, LRR%, LRC%, ROWS%, ATTRIB%)
  138. ; If ROWS%=0 then entire window cleared
  139. ; Description of parameters:
  140. ;    Because a rectangle can be described by two points, we us the following 
  141. ;    data points:
  142. ;    ULR = Upper left row
  143. ;    UCL = Upper left column
  144. ;    LRR = Lower right row
  145. ;    LRC = Lower right column
  146. ;       Rows = number of rows to scroll
  147. ; Uses the video bios to scroll a window.
  148. ;=========================================================================
  149.  
  150. EVEN
  151. SCROLLDOWN Proc FAR BASIC  \
  152. ULR:Word, ULC:Word, LRR:Word, LRC:Word, ROWS:Word, ATTRIB:Word
  153.     Mov  AH,7
  154.     Jmp  short Intro
  155. SCROLLDOWN EndP
  156. End
  157.